package org.club.Service;

import org.club.common.model.dto.*;
import org.club.common.model.entity.AnnouncementWithReadStatus;
import org.club.common.model.entity.ClubActivityInfo;
import org.club.common.model.entity.Clubs;
import org.club.common.model.vo.*;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@Service
public interface UserService {
    // 查询社团列表
    List<ClubInfoVO> selectClubsList(ClubInfoDto clubInfoDto, Long userId);

    Integer selectClubsListTotal();
//加入社团
    void joinClub(Long clubId, String username);
//查询加入的社团
    List<ClubInfoVO> selectjoinClubsList(Long userId);
//退出社团
    void quitClub(Long clubId, Long userId);
//查询当前社团发布的活动列表
    List<ActivitiesVO> selectActivities(Long clubId);
//学生报名活动
    void signUpActivity(Long activityId, Long userId);
//查询符合条件的活动列表
    List<ActivitiesNumberApplicantsVO> selectAllActivities(ActivityQueryDTO activityQueryDTO);
    //查询用户报名的活动
    List<Registration_InformationVO> selectUserSignUpActivities(Long userId, Integer status, String keyword);
    //    创建社团
    void CreateCommunity(ClubsDto clubsDto, Long user_id, MultipartFile file);
    //查询社团创建进度
    Clubs selectClubsProcess(Long userId);
//查询系统公告
    List<AnnouncementWithReadStatus> selectSystemAnnouncements(AnnouncementQueryDTO announcementQueryDTO);
//返回未读数量
    Integer selectUnreadCount(Long userId);
//修改公告已读状态
    void updateAnnouncementReadStatus(Long announcement_id);
//查询社团详情
    ClubsDetailVO selectClubsDetail(Long clubId);
//查询社团成员和活动
    List<ClubActivityInfo> selectClubsMembers(Long clubId);

    UserVo updatePersonalInfos(UpdatePersonalInfoRequestDto updatePersonalInfoRequestDto, MultipartFile file);

    List<ActivityCommentVO> getComments(Long activityId);

    void createComment(ActivityCommentDTO commentDTO);

    Long getCommentAuthorId(Long activityId);
}
